package com.xiaoyu.bitOperation;

/**
 * @program: DS_and_A
 * @description: 只出现一次的数字
 * @author: YuWenYi
 * @create: 2021-05-11 12:06
 **/
public class SingleNumber_136 {
    //这题如果使用hashmap将会非常简单,但是想要更低的空间复杂度,那么需要考虑别的方法
    //位运算:使用异或操作!(java中是^) 对数组中的所有数字进行异或,那么相同的数字会被异或成0,即A异或A = 0,然而B异或0等于B
    //因此异或所有的数字,最后留下的数字即为答案!
    public static int singleNumber(int[] nums) {
        int res = nums[0];
        for (int i = 1; i < nums.length; i++) {
            res = res ^ nums[i];
        }
        return res;
    }

    public static void main(String[] args) {
        int[] nums = new int[]{0,0,1,1,2,2,3};
        System.out.println(singleNumber(nums));
    }
}
